home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / document / hypertxt / xfsl / source / purec / minimal.c next >
Encoding:
C/C++ Source or Header  |  1995-11-25  |  3.7 KB  |  113 lines

  1. /*  @(#)minimal.c, Dirk Haun, Juni 1995
  2.  *
  3.  *  Dieser Quelltext zeigt einen minimalen xFSL-Aufruf. Wie man sehen kann,
  4.  *  genügt es, die xFSL_PAR- und PFONTINFO-Struktur mit Nullen zu füllen,
  5.  *  die Größen der beiden Strukturen (und evtl. noch die Fontfarbe)
  6.  *  einzutragen.
  7.  *
  8.  *  Ein Fontselektor-Aufruf in dieser Form ist i.A. nicht sehr sinnvoll, da
  9.  *  man ja meist nur bestimmte Fonts zur Auswahl stellen will. Dieser Quell-
  10.  *  text ist auch nur zur Demonstration und als Einladung zum Herumspielen
  11.  *  mit den vielen Parametern gedacht.
  12.  *
  13.  *  Insbesondere soll aber gezeigt werden, daß ein xFSL-Aufruf gar nicht so
  14.  *  kompliziert ist, wie es die vielen Parameter vermuten lassen. Was man
  15.  *  nicht benötigt (oder versteht), kann man einfach weglassen bzw. auf Null
  16.  *  setzen.
  17.  *
  18.  */
  19.  
  20. #include <stdio.h>
  21. #include <aes.h>
  22. #include <vdi.h>
  23. #include <string.h>
  24. #include <stdlib.h>
  25. #include <xfsl.h>
  26.  
  27. extern int get_cookie(long cookie,long *value);
  28.  
  29. static void xfsl_error(int err)
  30. {
  31.  char alert[256], z[8];
  32.  
  33.  strcpy(alert,"[3][Fontselektor meldet:|");
  34.  switch(err)
  35.  {
  36.   case xFS_ERROR:       strcat(alert,"Nicht genug Speicher");
  37.                         break;
  38.   case xFS_ACTIVE:      strcat(alert,"Mehrfachaufruf nicht möglich");
  39.                         break;
  40.   case xFS_NO_FONTSIZE: strcat(alert,"Fontgröße konnte nicht|identifiziert werden");
  41.                         break;
  42.   case xFS_NO_FONTS:    strcat(alert,"Anzahl Fonts muß|größer Null sein");
  43.                         break;
  44.   case xFS_NO_WINDOW:   strcat(alert,"Konnte kein Fenster öffnen");
  45.                         break;
  46.   case xFS_NO_HANDLE:   strcat(alert,"Kein Handle mehr frei");
  47.                         break;
  48.   case xFS_RES_ERROR:   strcat(alert,"Auflösung zu klein|(mind. 640x400)");
  49.                         break;
  50.   case xFS_LOADERROR:   strcat(alert,"Fehler beim Nachladen|des Overlays");
  51.                         break;
  52.   case xFS_PARERROR:    strcat(alert,"Fehlerhafte Parameter!|Aufruf nach Revision 3?");
  53.                         break;
  54.   default:              itoa(err,z,10);
  55.                         strcat(alert,"Fehler ");
  56.                         strcat(alert,z);
  57.  }
  58.  strcat(alert,"! ][ Abbruch ]");
  59.  form_alert(1,alert);
  60. }
  61.  
  62. int main(void)
  63. {
  64.  int xhandle, xret;
  65.  xFSL *xfsl;      /* Zeiger auf xFSL-Struktur */
  66.  xFSL_PAR xpar;   /* Parameter-Struktur */
  67.  PFONTINFO pfont; /* Fontinfo-Struktur */
  68.  char msg[256];
  69.  
  70.  if(appl_init()>=0)
  71.  {
  72.   if(get_cookie('xFSL',(long*)&xfsl))
  73.   {
  74.  
  75.    memset(&xpar,0,sizeof(xFSL_PAR));    /* Strukturen "ausnullen" */
  76.    memset(&pfont,0,sizeof(PFONTINFO));
  77.  
  78.    xpar.font=&pfont;                    /* Zeiger auf PFONTINFO eintragen */
  79.    xpar.par_size=(int)sizeof(xFSL_PAR); /* Größen eintragen (wichtig!) */
  80.    xpar.pfi_size=(int)sizeof(PFONTINFO);
  81.    xpar.font->fontcol=BLACK;            /* Fontfarbe schwarz */
  82.  
  83.    xhandle=xfsl->xfsl_init(0,&xpar);    /* Init-Aufruf */
  84.    if(xhandle>=0)
  85.    {
  86.     do
  87.     {
  88.      xret=xfsl->xfsl_event(xhandle,0L); /* Event-Aufruf */
  89.      if(xret<0) break;                  /* Fehler aufgetreten */
  90.     }
  91.     while(xret!=xFS_STOP && xret!=xFS_OK);
  92.     xfsl->xfsl_exit(xhandle);           /* Exit-Aufruf (nicht vergessen) */
  93.     if(xret<0) xfsl_error(xret);
  94.     else
  95.     {
  96.      if(xret==xFS_STOP) form_alert(1,"[1][\'Abbruch\' ausgewählt.][ OK ]");
  97.      else if(xret==xFS_OK)
  98.      {
  99.       sprintf(msg,"[1][Ausgewählt wurde Font %d|in der Größe %d pt.][ OK ]",
  100.                   xpar.font->fontid,xpar.font->fontsize.size);
  101.       form_alert(1,msg);
  102.      }
  103.     }
  104.    }
  105.    else xfsl_error(xhandle);
  106.  
  107.   }
  108.   else form_alert(1,"[2][Cookie \'xFSL\' nicht|gefunden!][ Abbruch ]");
  109.   appl_exit();
  110.  }
  111.  return(0);
  112. }
  113.